# 输入参数处理类
# 输入的参数列表转化为一个map
#  e.g.
# ruby rubyfile.rb -ParamKey1 key1_param1 key1_param2 -ParamKey2 key2_param1 key2_param2
# * 参数列表是 -ParamKey key1_param1 key1_param1 -ParamKey2 key2_param1 key2_param2
# * 转化为map后是 {“-ParamKey1" => [key1_param1,key1_param2], "-ParamKey2" => [key2_param1,key2_param2]}
#
class CommandParser
    # 这个方法将一个Array对象转换为一个Map对象{'keyname'=>Array,...}
    # * 以输入参数中以'-'开头的元素将作为一个map对象中的Key值
    # * 直到遇到下一个Key值前，所有中间的元素为这个Key值的Value(一个Array对象)中的元素
    # * value允许为一个空的Array对象
    def self.map_arguments(argv)
        arguments = []
        map = {}
        argv.each do |arg|
            arguments << arg
        end
        for i in (0...arguments.size) do
            if arguments[i].index("-") == 0
                if map[arguments[i]] == nil
                paramList = map[arguments[i]] = []
                else
                paramList = map[arguments[i]]
                end
                i = i + 1
                while( i < arguments.size and arguments[i].index("-")!=0 )
                    paramList << arguments[i]
                    i = i + 1
                end
            i = i - 1
            end
        end
        return map
    end
end